/**
 * Copyright (c) 2010 Michael A. MacDonald
 */
package android.androidVNC;

import android.graphics.PointF;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.MotionEvent;

/**
 * Input handlers delegate to this class to handle keystrokes; this detects keystrokes
 * from the DPad and uses them to perform mouse actions; other keystrokes are passed to
 * VncCanvasActivity.defaultKeyXXXHandler
 * 
 * @author Michael A. MacDonald
 *
 */
class DPadMouseKeyHandler {
//	private MouseMover mouseMover;
//	private boolean mouseDown;
//	private VncCanvasActivity activity;
//	private VncCanvas canvas;
//	private boolean isMoving;
//
//	DPadMouseKeyHandler(VncCanvasActivity activity, Handler handler)
//	{
//		this.activity = activity;
//		canvas = activity.vncCanvas;
//		mouseMover = new MouseMover(activity, handler);
//	}
//
//	public boolean onKeyDown(int keyCode, KeyEvent evt) {
//		int xv = 0;
//		int yv = 0;
//		boolean result = true;
//		switch (keyCode) {
//		case KeyEvent.KEYCODE_DPAD_LEFT:
//			xv = -1;
//			break;
//		case KeyEvent.KEYCODE_DPAD_RIGHT:
//			xv = 1;
//			break;
//		case KeyEvent.KEYCODE_DPAD_UP:
//			yv = -1;
//			break;
//		case KeyEvent.KEYCODE_DPAD_DOWN:
//			yv = 1;
//			break;
//		case KeyEvent.KEYCODE_DPAD_CENTER:
//			if (!mouseDown) {
//				mouseDown = true;
//				result = canvas.processPointerEvent(canvas.mouseX, canvas.mouseY, MotionEvent.ACTION_DOWN, evt.getMetaState(), mouseDown, canvas.cameraButtonDown);
//			}
//			break;
//		default:
//			result = activity.defaultKeyDownHandler(keyCode, evt);
//			break;
//		}
//		if ((xv != 0 || yv != 0) && !isMoving) {
//			final int x = xv;
//			final int y = yv;
//			isMoving = true;
//			mouseMover.start(x, y, new Panner.VelocityUpdater() {
//
//				/*
//				 * (non-Javadoc)
//				 *
//				 * @see android.androidVNC.Panner.VelocityUpdater#updateVelocity(android.graphics.Point,
//				 *      long)
//				 */
//				@Override
//				public boolean updateVelocity(PointF p, long interval) {
//					double scale = (1.2 * (double) interval / 50.0);
//					if (Math.abs(p.x) < 500)
//						p.x += (int) (scale * x);
//					if (Math.abs(p.y) < 500)
//						p.y += (int) (scale * y);
//					return true;
//				}
//
//			});
//			canvas.processPointerEvent(canvas.mouseX + x, canvas.mouseY + y, MotionEvent.ACTION_MOVE, evt.getMetaState(), mouseDown, canvas.cameraButtonDown);
//
//		}
//		return result;
//	}
//
//	public boolean onKeyUp(int keyCode, KeyEvent evt) {
//		boolean result = false;
//
//		switch (keyCode) {
//		case KeyEvent.KEYCODE_DPAD_LEFT:
//		case KeyEvent.KEYCODE_DPAD_RIGHT:
//		case KeyEvent.KEYCODE_DPAD_UP:
//		case KeyEvent.KEYCODE_DPAD_DOWN:
//			mouseMover.stop();
//			isMoving = false;
//			result = true;
//			break;
//		case KeyEvent.KEYCODE_DPAD_CENTER:
//			if (mouseDown) {
//				mouseDown = false;
//				result = canvas.processPointerEvent(canvas.mouseX, canvas.mouseY, MotionEvent.ACTION_UP, evt.getMetaState(), mouseDown, canvas.cameraButtonDown);
//			} else {
//				result = true;
//			}
//			break;
//		default:
//			result = activity.defaultKeyUpHandler(keyCode, evt);
//			break;
//		}
//		return result;
//	}
}
